package com.rem.designPattern.designPrinciple.dependenceInversion;

/**
 * 设计模式七大原则--依赖倒转
 * 抽象不应该依赖细节，细节应该依赖抽象，中心思想是面向接口编程
 * <p>
 * 需求：一个人接收不同的消息
 * <p>
 * 反例：根据消息不同 接收不同的类 ,每增加一个消息类型，就需要在客户端增加一个方法
 *
 * @author Rem
 * @date 2022-11-12
 */
public class DependecyInversion01 {
    public static void main(String[] args) {

        Person person = new Person();
        person.receive(new Email());
        person.receive(new Wechat());
    }
}

class Person {
    public void receive(Email email) {
        System.out.println(email.getInfo());
    }

    public void receive(Wechat wechat) {
        System.out.println(wechat.getInfo());
    }
}

class Email {
    public String getInfo() {
        return "电子邮件信息: hello,world";
    }
}

class Wechat {
    public String getInfo() {
        return "微信消息: hi,chat";
    }
}